package vip.liux.backend.application.service.pay;

import vip.liux.application.dots.PagedResultDto;
import vip.liux.backend.application.service.pay.dto.wallet.PayWalletTransactionDto;
import vip.liux.backend.application.service.pay.dto.wallet.PayWalletTransactionQueryDto;
import vip.liux.backend.application.service.pay.dto.wallet.WalletTransactionCreateDto;
import vip.liux.contracts.shared.enums.pay.PayWalletBizType;

/**
 * 钱包余额流水 Service 接口
 *
 * @author jason
 */
public interface PayWalletTransactionService {

    /**
     * 查询钱包余额流水分页
     *
     * @param userId   用户编号
     * @param userType 用户类型
     * @param pageVO   分页查询参数
     */
    // PagedResultDto<PayWalletTransactionQueryDto> getWalletTransactionPage(Long userId, Integer userType,
    //                                                                       AppPayWalletTransactionPageReqVO pageVO);

    /**
     * 查询钱包余额流水分页
     *
     * @param input 分页查询参数
     */
    PagedResultDto<PayWalletTransactionDto> getWalletTransactionPage(PayWalletTransactionQueryDto input);

    /**
     * 新增钱包余额流水
     *
     * @param bo 创建钱包流水 bo
     * @return 新建的钱包 do
     */
    PayWalletTransactionDto createWalletTransaction(WalletTransactionCreateDto bo);

    /**
     * 根据 no，获取钱包余流水
     *
     * @param no 流水号
     */
    PayWalletTransactionDto getWalletTransactionBySeqNo(String no);

    /**
     * 获取钱包流水
     *
     * @param bizId 业务编号
     * @param type  业务类型
     * @return 钱包流水
     */
    PayWalletTransactionDto getWalletTransaction(String bizId, PayWalletBizType type);

    /**
     * 获得钱包流水统计
     *
     * @param userId 用户编号
     * @param userType 用户类型
     * @param createTime 时间段
     * @return 钱包流水统计
     */
    // AppPayWalletTransactionSummaryRespVO getWalletTransactionSummary(Long userId, Integer userType,
    //                                                                  LocalDateTime[] createTime);

}
